A programming language is said to have first class functions if functions are treated as any other variable and can be passed as arguments, returned from a function or can be assigned to a variable as value.